package NGUYENMINHHIEU.ARRAY_DEMO.EXAMPLE03;

public class MODELS {
    /**
     * Nghiệp vụ tìm tập vị trí chứa giá trị lớn nhất hoặc nhỏ nhất
     * @param myList
     * @param iValue - Max hoặc Min
     * @return String: 1-2-3...n
     */
    public String IndexMaxStringElements(int[] myList, int iValue) {
        String strOut = "";
        for (int i = 0; i < myList.length; i++) {
            if (iValue == myList[i]) {
                if (strOut.isEmpty())
                    strOut += i; // strOut = 1;
                else
                    strOut += "-" + i; // strOut = 1-n
            }
        }
        return strOut;
    }

    /**
     * Nghiệp vụ tìm tập vị trí chứa giá trị Lớn Nhất hoặc Nhỏ Nhất
     * @param myList
     * @param iValue
     * @return - int[] {1,2,3...n}
     */
    public int[] IndexMaxElement(int[] myList, int iValue) {
        int[] iIndexValue;
        int[] iTemp = new int[myList.length];
        // Duyệt và tìm tập vị trí chứa giá trị lớn nhất
        int iCount = 0;
        for (int i = 0; i < myList.length; i++) {
            if (iValue == myList[i]) {
                iTemp[iCount] = i;
                iCount++;
            }
        }
        // --> Sao chép toàn bộ giá trị trong mảng iTemp --> mảng iIndexMax
        iIndexValue = new int[iCount];
        System.arraycopy(iTemp, 0, iIndexValue, 0, iCount);

        return iIndexValue;
    }

    /**
     * Tìm kiếm giá trị lớn nhất trong mảng
     * @param myList
     * @return
     */
    public int FindMaxElement(int[] myList) {
        int max = myList[0];
        for (int i = 1; i < myList.length; i++) {
            // So sánh giá trị
            if (max < myList[i]) {
                max = myList[i];
            }
        }
        return max;
    }

    /**
     * Tìm kiếm giá trị nhỏ nhất trong mảng
     * @param myList
     * @return
     */
    public int FindMinElement(int[] myList) {
        int min = myList[0];
        for (int i = 1; i < myList.length; i++) {
            // So sánh giá trị
            if (min > myList[i]) {
                min = myList[i];
            }
        }
        return min;
    }
}
